{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Linear Regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Let's fabricate some data that shows a roughly linear relationship between page speed and amount purchased:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x20e3126c940>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20e2f5ab588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import numpy as np\n",
    "from pylab import *\n",
    "\n",
    "pageSpeeds = np.random.normal(3.0, 1.0, 1000)\n",
    "purchaseAmount = 100 - (pageSpeeds + np.random.normal(0, 0.1, 1000)) * 3\n",
    "\n",
    "scatter(pageSpeeds, purchaseAmount)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "As we only have two features, we can keep it simple and just use scipy.state.linregress:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "from scipy import stats\n",
    "\n",
    "slope, intercept, r_value, p_value, std_err = stats.linregress(pageSpeeds, purchaseAmount)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Not surprisngly, our R-squared value shows a really good fit:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.98933636422743532"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r_value ** 2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Let's use the slope and intercept we got from the regression to plot predicted values vs. observed:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nSUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20e2f3c47b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def predict(x):\n",
    "    return slope * x + intercept\n",
    "\n",
    "fitLine = predict(pageSpeeds)\n",
    "\n",
    "plt.scatter(pageSpeeds, purchaseAmount)\n",
    "plt.plot(pageSpeeds, fitLine, c='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## Activity"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Try increasing the random variation in the test data, and see what effect it has on the r-squared error value."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
